package appvideo.logica;

import appvideo.persistencia.Persistencia_Salarios;

public class Salario {
    //Horas y Horas Extras Trabajadas al mes.
    private int horasTrabajadas;
    private float precioHora;
    private int salarioBrutoAnual,salarioNetoAnual;
    private int salarioBrutoMensual, salarioNetoMensual;



    private static final float IVA = 0.16f;

    //Constructor sin necesidad de horas extra
    public Salario(int horasTrabajadas, float precioHora) {
        this.horasTrabajadas = horasTrabajadas;
        this.precioHora = precioHora;
        this.salarioBrutoMensual = (int)((horasTrabajadas*precioHora)+(horasTrabajadas*precioHora*IVA));
        this.salarioNetoMensual = (int)(this.salarioBrutoMensual-this.salarioBrutoMensual*IVA);
        this.salarioBrutoAnual = this.salarioBrutoMensual*12;
        this.salarioNetoAnual = this.salarioNetoMensual*12;
    }

    public Salario(int salarioBrutoMensual){
        this.salarioBrutoMensual=salarioBrutoMensual;
        this.salarioNetoMensual=(int)(this.salarioBrutoMensual-this.salarioBrutoMensual*IVA);
        this.salarioBrutoAnual=this.salarioBrutoMensual*12;
        this.salarioNetoAnual=this.salarioNetoMensual*12;
        this.precioHora=(float)(this.salarioNetoMensual/this.horasTrabajadas);
    }

    public int getHorasTrabajadas() {
        return horasTrabajadas;
    }

    public void setHorasTrabajadas(int horasTrabajadas) {
        this.horasTrabajadas = horasTrabajadas;
        //Al Modificar las horas trabajadas tiene que modificarme los atributos del salario
        this.salarioBrutoMensual = (int)(this.horasTrabajadas*precioHora);
        this.salarioNetoMensual = (int)(this.salarioBrutoMensual-this.salarioBrutoMensual*IVA);
        this.salarioBrutoAnual = this.salarioBrutoMensual*12;
        this.salarioNetoAnual = this.salarioNetoMensual*12;
    }

    public float getPrecioHora() {
        return precioHora;
    }

    public void setPrecioHora(float precioHora) {
        this.precioHora = precioHora;
        //Al actualizar el precio hora hay que actualizar todo lo demas
        this.salarioBrutoMensual = (int)(horasTrabajadas*this.precioHora);
        this.salarioNetoMensual = (int)(this.salarioBrutoMensual-this.salarioBrutoMensual*IVA);
        this.salarioBrutoAnual = this.salarioBrutoMensual*12;
        this.salarioNetoAnual = this.salarioNetoMensual*12;
    }
    //MENSUAL
    public int getSalarioBrutoMensual(){
        return this.salarioBrutoMensual;
    }
    public int getSalarioNetoMensual(){
        return this.salarioNetoMensual;
    }
    public void setSalarioBrutoMensual(int salarioBrutoMensual) {
        this.salarioBrutoMensual = salarioBrutoMensual;
        //Al actualizar el Bruto Mensual tengo que actualizar todas las otras informaciones
        this.salarioNetoMensual = (int)(this.salarioBrutoMensual-this.salarioBrutoMensual*IVA);
        this.salarioBrutoAnual=this.salarioBrutoMensual*12;
        this.salarioNetoAnual=this.salarioNetoMensual*12;
        this.precioHora=this.salarioNetoMensual/(float)this.horasTrabajadas;
    }
    //ANUAL
    public int getSalarioNetoAnual(){
        return salarioNetoAnual;
    }
    public int getSalarioBrutoAnual(){
        return salarioBrutoAnual;
    }
    public void setSalarioBrutoAnual(int salarioBrutoAnual) {
        this.salarioBrutoAnual = salarioBrutoAnual;
        //Al actualizar el Bruto Anual tengo que actualizar todas las otras informaciones
        this.salarioNetoAnual = (int)(this.salarioBrutoAnual-this.salarioBrutoAnual*IVA);
        this.salarioBrutoMensual=this.salarioBrutoAnual/12;
        this.salarioNetoMensual=this.salarioNetoAnual/12;
        this.precioHora=(float)(this.salarioNetoMensual/this.horasTrabajadas);
    }
    
    public boolean modificaSalario(Empleado e){
        boolean ret=false;
        //Ret(Retorno) dira si se realizado la modificacion o no
        ret=Persistencia_Salarios.modificaSalario(e);
        
        return ret;
    }
    
    @Override
    public String toString(){
        return "Bruto Anual: "+salarioBrutoAnual;
    }
}
